﻿// 1303 [POJ 1830] 开关问题.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>


using namespace std;
/*
http://oj.daimayuan.top/course/22/problem/1080

有 n个相同的开关，每个开关都与某些开关有着联系，每当你打开或者关闭某个开关的时候，
其他的与此开关相关联的开关也会相应地发生变化，即这些相联系的开关的状态如果原来为开就变为关，如果为关就变为开。

你的目标是经过若干次开关操作后使得最后 n
 个开关达到一个特定的状态。 对于任意一个开关，最多只能进行一次开关操作。

你的任务是，计算有多少种可以达到指定状态的方法（不计开关操作的顺序）。

输入格式
输入第一行有一个数 k，表示以下有 k组测试数据。

每组测试数据的格式如下：

第一行一个数 n。

第二行 n个数，表示开始时 n
 个开关的状态，0 表示关，1 表示开。

第三行 n个数，表示操作结束后 n个开关的状态，0 表示关，1 表示开。

接下来每行两个数 i,j，表示如果操作第 i
 个开关，第 j个开关的状态也会变化(单向)。每组数据以 0 0结束。

输出格式
如果有可行方法，输出总数，否则输出 −1。

样例输入
2
3
0 0 0
1 1 1
1 2
1 3
2 1
2 3
3 1
3 2
0 0
3
0 0 0
1 0 1
1 2
2 1
0 0
样例输出
4
-1
样例解释
第一组数据的说明：

有以下四种方法：

操作开关 1
操作开关 2
操作开关 3
操作开关 1、2、3

数据范围
对于 100%的数据，保证 1≤k≤10,2≤n≤28,1≤i,j≤n,i≠j,(i,j)可能重复，总数 ≤n2。
*/


int main()
{
    std::cout << "Hello World!\n";
}
 